import * as XLSX from 'xlsx'
import { MultiPartData } from 'h3'

interface ParseExcelResult<T> {
  success: boolean
  message: string
  result?: {
    total: number
    data: T[]
  }
}

export function parseExcel<T>(file: MultiPartData) {
  // 参数验证
  if (!file?.data) {
    throw new Error('文件数据不能为空')
  }

  // 读取Excel文件
  const workbook = XLSX.read(file.data, { type: 'buffer' })

  if (!workbook.SheetNames.length) {
    throw new Error('Excel文件中没有工作表')
  }

  const firstSheetName = workbook.SheetNames[0]
  const worksheet = workbook.Sheets[firstSheetName]

  if (!worksheet) {
    throw new Error('工作表不存在')
  }

  // 转换为JSON数据
  const jsonData = XLSX.utils.sheet_to_json<T>(worksheet, {
    header: 1,
    defval: null // 将空单元格设置为null
  })

  // 结果处理
  if (jsonData.length === 0) {
    throw new Error('文件数据总数为空')
  }

  return jsonData
}
